home *** CD-ROM | disk | FTP | other *** search
-
- Cursor V1.7 - Ein BASIC-Compiler
- (c) Copyright 1990-1994 Jürgen Forster
-
- Dieses Programm ist Shareware. Es darf für eine kleine Kopiergebühr
- weitergegeben werden, wird es aber oft benutzt, so sollte eine Sharegebühr
- von 20 DM oder 15$ an den Autor geschickt werden.
-
- "Cursor" übersetzt BASIC-Programme, die für den AmigaBASIC-Interpreter
- geschrieben wurden, in allein lauffähige Programme, die vom CLI oder von
- der Workbench aus gestartet werden können und schneller sind, als wenn
- sie vom Interpreter aus ablaufen. Es werden (noch?) nicht alle Befehle des
- AmigaBASIC-Interpreters unterstützt, eine Liste der möglichen Befehle ist
- unter "UNTERSTÜTZTE BEFEHLE UND FUNKTIONEN" zu finden.
-
- Ich übernehme keine Verantwortung für irgendwelche Schäden, die dieses
- Programm anrichten könnte.
-
- Mit "Cursor" übersetzte Programme dürfen (einschließlich der "basic.library")
- nur weitergegeben oder verkauft werden, wenn die Shareware-Gebühr bezahlt
- wurde.
-
-
-
-
- INSTALLATION
-
- Um den "Cursor" zu benutzen, muß die Datei "Cursor" ins "C:"-Verzeichnis
- und die Datei "basic.library" ins "LIBS:"-Verzeichnis kopiert werden.
- Alle Programme, die mit "Cursor" übersetzt wurden, brauchen diese Library,
- außer sie wurden mit der "STANDALONE"-Option übersetzt (siehe unter
- "OPTIONEN").
- Außerdem werden die Mathematik-Libraries "mathtrans.library",
- "mathieeedoubbas.library" und "mathieeedoubtrans.library" benötigt,
- die sich also auch im "LIBS:"-Verzeichnis befinden müssen.
- "Cursor" schreibt einige temporäre Dateien in das T:-Verzeichnis, das sich
- am besten in der RAM-Disk befindet ("assign T: RAM:").
-
-
-
-
- BENUTZUNG
-
- Um ein BASIC-Programm zu übersetzen, muß es im ASCII-Format vorhanden
- sein (AmigaBASIC-Programme können aus dem Interpreter heraus mit
- SAVE "Name.bas",A im ASCII-Format abgespeichert werden).
- Vom CLI aus kann man "Cursor" mit dem BASIC-Programmnamen als Parameter
- aufrufen. Es können außerdem einige Optionen eingestellt werden (siehe
- bei "OPTIONEN").
- Will man "Cursor" von der Workbench aus starten, benutzt man den Editor
- "CursorMenu" (der natürlich auch vom CLI aus gestartet werden kann), von
- dem aus sich die Optionen über Menüs einstellen lassen.
- Wenn während der Übersetzung kein Fehler auftritt, wird ein ausführbares
- Programm erzeugt, dessen Name der des Quelltextes ohne Endung ist.
-
-
-
-
- ÜBERSETZTE PROGRAMME
-
- - Alle von "Cursor" übersetzten Programme sind "Pure", "Cursor" setzt
- automatisch das "Pure-Bit" dieser Programme.
-
- - Alle Programme können von der Workbench oder dem CLI aus gestartet werden.
- Von CLI übergebene Parameter werden so behandelt, als ob der Benutzer sie
- über die Tastatur getrennt durch die <RETURN>-Taste eingegeben hätte.
-
- - Tritt während des Ablaufs eines Programms ein Fehler auf, so wird
- die Fehlermeldung entweder in das CLI-Fenster (Standardausgabedatei)
- geschrieben oder ein Requester wird angezeigt. Wenn z.B. eine Datei mit
- "OPEN" geöffnet werden sollte, aber nicht vorhanden ist, so wird der
- genaue Fehler (OBJECT_NOT_FOUND) angezeigt. Außerdem wird ggf. die
- Zeilennummer im Quelltext, an der der Fehler aufgetreten ist, angezeigt
- (siehe "OPTIONEN").
-
- - Die Übersetzten Programme können fast immer mit Hilfe eines WINDOWCLOSE-
- Gadgets oder mit <CTRL>-C abgebrochen werden.
-
-
-
-
- OPTIONEN
-
- Es können verschiedene Optionen eingestellt werden, die das übersetzte
- Programm beeinflussen. Die Wahl der Optionen geschieht entweder vom Editor
- "CursorMenu" aus, durch den OPTION-Befehl im Quelltext (z.B. "OPTION
- NOWINDOW") oder durch CLI-Parameter (z.B. "Cursor -m2 Test.bas").
-
- Folgende Optionen sind möglich:
-
- - NOWINDOW (-w0 vom CLI), OPENWINDOW (-w1)
- Bei NOWINDOW wird beim Start des übersetzten Programms kein Fenster
- automatisch geöffnet.
- Bei OPENWINDOW (Voreinstellung) wird ein neues Fenster mit der Nummer 1
- auf dem Workbench-Bildschirm oder dem Bildschirm des Editors "CursorMenu"
- in dessen Größe geöffnet.
-
- - ALLPCRELATIVE (-b2), SOMEPCRELATIVE (-b1), NOPCRELATIVE (-b0)
- Bei ALLPCRELATIVE wird angenommen, daß alle Verzweigungen im übersetzten
- Programm nicht weiter als 32K entfernt reichen. Dadurch werden Programme,
- die nicht zu groß sind, noch etwas kürzer.
- Bei SOMEPCRELATIVE (Voreinstellung) reicht es, daß alle Verzweigungen
- innerhalb von Unterprogrammen nicht weiter als 32K entfernt reichen.
- Bei NOPCRELATIVE können alle Verzweigungen beliebig weit reichen.
-
- - STANDALONE (-s)
- Wenn diese Option gewählt wird, wird die "basic.library" nicht mehr
- gebraucht, wenn das übersetzte Programm abläuft, sie muß nun aber während
- der Übersetzung im aktuellen oder im "LIBS:"-Verzeichnis vorhanden sein.
- Obwohl das übersetzte Programm so etwa 30K länger wird, wird nun immer die
- gleiche und richtige Version der "basic.library" benutzt. Wenn Sie ihre
- Programme an andere Benutzer weiter geben wollen, so sollten sie diese
- Option benutzen.
-
- - LISTING (-l[<listing file>])
- Bei dieser Option wird eine Liste der im Programm verwendeten Variablen
- erzeugt. In dieser Liste wird angegeben, in welchem Unterprogramm
- jede Variable verwendet wird, und in welchen Zeilen des Programmes sie
- benutzt wird. Die Liste wird in eine Datei mit der Endung ".lst" oder
- in die Datei, die der Benutzer vom CLI aus gewählt hat, geschrieben.
-
-
-
-
- UNTERSTÜTZTE BEFEHLE UND FUNKTIONEN
-
- "Ja" heißt, daß der Befehl oder die Funktion (fast) genauso wie
- beim AmigaBASIC-Interpreter funktioniert, "Nein" heißt, daß der Befehl/die
- Funktion noch nicht verwendbar ist.
- Wenn ein Befehl oder eine Funktion noch nicht unterstützt werden, so wird
- das nicht unbedingt schon bei der Übersetzung des Programms angezeigt,
- manchmal bricht das übersetzte Programm erst dann ab, wenn es zu einem
- solchen Befehl gelangt und gibt eine "Advanced Feature"-Fehlermeldung aus.
-
- ABS() Ja
- AREA Ja
- 20 verschiedene Punkte können gesetzt werden.
- AREAFILL Ja
- ASC() Ja
- ATN() Ja
- BEEP
- Bildschirm blinkt nur auf, kein Ton.
- BREAK Ja
- CALL Ja
- CDBL() Ja
- CHAIN Nicht möglich
- CHDIR Ja
- CHR$() Ja
- CINT() Ja
- CIRCLE Nein
- CLEAR Ja
- Dient zum Festlegen der Größe des Speichers für die String-Variablen
- und der Größe des Stapelspeichers (für GOSUB/RETURN und CALL/SUB).
- Während das übersetzte Programm abläuft werden die Größen dieser
- Speicherbereiche aber nicht mehr verändert, es wird immer der größte
- während des Übersetzens auftretende Wert verwendet. D.h. daß als Parameter
- hier keine Variablen sondern nur Konstante angegeben werden dürfen. Die
- Voreinstellungen sind 25000 Bytes für String-Variable und 4000 Bytes für
- den Stack.
- CLNG() Ja
- CLOSE Ja
- CLS Ja
- COLLISION Ja
- COLLISION() Ja
- COLOR Ja
- COMMON Nicht möglich
- CONT Nicht möglich
- COS() Ja
- CSNG() Ja
- CSRLIN Ja
- CVI() Ja
- CVL() Ja
- CVS() Ja
- CVD() Ja
- DATA Ja
- DATE$ Ja
- DECLARE FUNCTION Ja
- DEF FN Ja
- DEFINT Ja
- DEFLNG Ja
- DEFSNG Ja
- DEFDBL Ja
- DEFSTR Ja
- DELETE Nicht möglich
- DIM Ja
- END Ja
- END SUB Ja (siehe "SUB")
- EOF() Ja
- ERASE Ja
- ERL Ja
- ERR Ja
- ERROR Ja
- EXIT SUB Ja (siehe "SUB")
- EXP() Ja
- FIELD Ja
- FILES Ja
- FIX() Ja
- FOR Ja
- FRE() Ja
- FRE(-3) Gibt AvailMem(MEMF_LARGEST) zurück, wie es auch AmigaBASIC tut.
- FRE(0) Erzwingt eine Garbage-Collection (Aufräumen des Speichers für
- Strings) und gibt die Größe des noch freien Stringspeichers zurück.
- GET Ja
- GOSUB Ja
- GOTO Ja
- HEX$() Ja
- IF Ja
- INKEY$ Ja
- INPUT Ja
- INPUT$() Ja
- INPUT # Ja
- INSTR Ja
- INT() Ja
- KILL Ja
- LBOUND Nein
- LEFT$() Ja
- LEN() Ja
- LET Ja
- LIBRARY Ja
- Die ".bmap"-Dateien werden nur während der Übersetzung benötigt.
- LINE Ja
- LINE INPUT Ja
- LINE INPUT # Ja
- LIST Nicht möglich
- LLIST Nicht möglich
- LOAD Nicht möglich
- LOC() Ja
- LOCATE Ja
- LOF() Ja
- LOG() Ja
- LPOS() Ja
- LPRINT Ja
- LPRINT USING Ja
- LSET Ja
- MENU Ja
- MENU() Ja
- MERGE Nicht möglich
- MID$() Ja
- MKI$() Ja
- MKL$() Ja
- MKS$() Ja
- MKD$() Ja
- MOUSE() Ja
- MOUSE Ja
- NAME Ja
- NEW Nicht möglich
- NEXT Ja
- OBJECT.AX Ja
- OBJECT.AY Ja
- OBJECT.CLIP Ja
- OBJECT.CLOSE Ja
- OBJECT.HIT Ja
- OBJECT.ON Ja
- OBJECT.OFF Ja
- OBJECT.PLANES Ja
- OBJECT.PRIORITY Nein
- OBJECT.SHAPE Ja
- OBJECT.START Ja
- OBJECT.STOP Ja
- OBJECT.VX Ja
- OBJEXT.VX() Ja
- OBJECT.VY Ja
- OBJECT.VY() Ja
- OBJECT.X Ja
- OBJECT.X() Ja
- OBJECT.Y Ja
- OBJECT.Y() Ja
- OCT$() Ja
- ON BREAK GOSUB Ja
- ON COLLISION GOSUB Ja
- ON ERROR GOTO Ja
- ON MENU GOSUB Ja
- ON MOUSE GOSUB Ja
- ON TIMER ... GOSUB Ja
- ON ... GOSUB Ja
- ON ... GOTO Ja
- OPEN Ja
- OPTION BASE Nein
- PAINT Ja
- PALETTE Ja
- PATTERN Ja
- PEEK Ja
- PEEKL Ja
- PEEKW Ja
- POINT Ja
- POKE Ja
- POKEL Ja
- POKEW Ja
- POS() Ja
- PRESET Ja
- PRINT (oder ?) Ja
- PRINT USING Ja
- PRINT # Ja
- PRINT USING # Ja
- PSET Ja
- PTAB Ja
- PUT Ja
- RANDOMIZE Ja
- READ Ja
- REM Ja
- RESTORE Ja
- RESUME Ja
- RETURN Ja
- RIGHT$() Ja
- RND() Ja
- Der Zufallszahlenerzeuger stammt von Steve Beats (Fish disk 20).
- RSET Ja
- RUN Nein
- SADD() Ja
- SAVE Nicht möglich
- SAY Ja
- SCREEN Ja
- SCREEN CLOSE Ja
- SCROLL Ja
- SGN() Ja
- SHARED Ja
- SIN() Ja
- SLEEP Ja
- SOUND Nein
- SPACE$() Ja
- SPC() Ja
- SQR() Ja
- STICK Ja
- Liest direkt aus Hardware-Registern.
- STOP Nein
- STR$() Ja
- STRIG() Ja
- Liest direkt aus Hardware-Registern.
- STRING$() Ja
- SUB Ja
- Parameter werden nicht wie (so glaube ich) bei AmigaBASIC mit Zeigern
- (call by reference) übergeben, sondern es werden die Werte übergeben
- (call by value).
- Anders als bei AmigaBASIC sind Rekursionen erlaubt, Werte lokaler Variablen
- bleiben nach dem Verlassen eines Unterprogramms allerdings nicht
- erhalten.
- SWAP Ja
- SYSTEM Ja
- TAB() Ja
- TAN() Ja
- TIME$ Ja
- TIMER Ja
- TIMER() Ja
- TRANSLATE$() Ja
- TRON Nein
- TROFF Nein
- UBOUND Nein
- UCASE$ Ja
- VAL Ja
- VARPTR Ja
- WAVE Nein
- WEND Ja
- WHILE Ja
- WIDTH Nein
- WINDOW Ja
- WINDOW CLOSE Ja
- WINDOW OUTPUT Ja
- WINDOW() Ja
- WRITE Ja
- WRITE # Ja
-
- außerdem möglich sind:
- =, <, >, <=, >=, <>, MOD, *, /, ^, +, -, \, NOT, AND, OR, XOR, EQV, IMP
-
-
-
-
- ÜBER DEN COMPILER
-
- "Cursor" selbst wurde zunächst in AmigaBASIC geschrieben, wurde inzwischen
- aber auf den SAS/Lattice C-Compiler übertragen. Die Library "basic.library"
- wurde in Assembler geschrieben und mit "A68k" von Charlie Gibbs übersetzt.
-
-
-
-
- Fehlerberichte, Verbesserungsvorschläge, Kritik, GELD (per Post oder
- Überweisung auf: Sparkasse Bielefeld BLZ 48050161, Konto-Nr. 39531942), etc.
- bitte an
-
- Jürgen Forster
- Lintheide 9
- 33719 Bielefeld
- Germany
-
-